1. Field of the Invention
Aspects of the present invention relate generally to an improved data and transaction processing system, and in particular to Service Oriented Architectures (SOAs). More specifically, the aspects of the present invention relate to optimally selecting a business service implementation and optimizing the service execution dynamically based on contextual information relating to the business, the operational environment, and self learning.
2. Description of the Related Art
A Service Oriented Architecture (SOA) is a collection of services that communicate with one another over a network in order to carry out business processes. Communication in a Service Oriented Architecture can involve the simple passing of data or can involve two or more services that coordinate some activity. Such services are loosely coupled (meaning that one application does not need to know the technical details of another application in order to communicate with the other application), have well-defined platform independent interfaces, and are reusable. In general, a service-oriented approach enables one or more businesses to link together fragmented data and business processes in order to create a more complete view of operations. For example, a retail business deciding whether to issue a credit card to a customer can use Service Oriented Architecture technology to tap different available sources to pull together information on the customer's credit worthiness and buying habits. A bank can use the same Service Oriented Architecture to handle account transfers whether they originate from a teller, an ATM or a Web application, thus avoiding the need for multiple applications. As yet another example, a manufacturer can effectively use a Service Oriented Architecture to measure a production process, and then make appropriate adjustments to the process that feeds back instantly to its chain of suppliers.
A service in a Service Oriented Architecture is a function which can be invoked via an implementation-independent interface. A service provider is an entity that offers a service to other entities, and an entity that makes use of a service by triggering its execution is a service requester. A Service Oriented Architecture provides flexibility by allowing a service requester to discover and invoke a service dynamically based on the pre-published service interface (i.e., the description of the functionality provided by the service). A service request may be processed by one of multiple possible service providers. An intermediary, such as an Enterprise Service Bus (ESB) or a business process engine, typically determines the particular service provider implementation to be used to process the request. A service provider implementation is a specific implementation of the service deployed for the request (e.g., usually a server program). The intermediary may select the particular service implementation to use based on business taxonomy and business rules. A business rule contains conditions and actions that apply to an organization to achieve its business goals. Business rules may include, for example, referential-integrity rules, application-behavior rules, transaction-processing business-logic rules, and data-entity processing rules, such as stored procedures.